草庐IT

C++ 指向 vector 的指针

全部标签

windows - 我如何知道 SVN 工作副本中的所有目录都指向同一个存储库根目录?

我们最近遇到了一个问题,即TortoiseSVN或AnkhSVN(我无法确定是哪个)在切换SVN工作副本的过程中崩溃了。我们的开发人员并没有意识到切换不完整,一切都很好,直到将分支合并回主干,我们才知道一些更改已经提交到主干,并且已经提交了一些更改到分行。幸运的是,这实际上并没有影响任何东西,但我担心以后可能会再次发生这种情况,我需要一种快速的方法来测试工作副本中的子目录指向哪个存储库。现在,在Linux中,我可以非常快速地组合一个shell脚本来确定这一点,但我目前不知道如何在Windows中找到它。如果必须的话,我并不完全反对使用SharpSVN一起破解某些东西(请放心,如果我这样

c++ - 删除静态指针指向的动态内存

我有以下结构(简化):classmyType{staticchar*data;//moreprivatedataherepublic://publicinterfacehere};data是myType的所有实例之间共享的资源,它指向一个动态分配的内存(由其中一个实例在初始化时分配)。到目前为止一切顺利。当我需要释放data指向的内存时,问题就出现了。引用计数不是这里的解决方案,因为在某个执行点没有myType的单个实例是一种有效且可能的情况-稍后可以创建一个新实例-因此数据必须保留。我需要在卸载驱动程序时释放内存,但卸载与myType对象的实际销毁无关,因此我不得不手动释放data.

c++ - 有没有办法确定标准输出是否指向控制台?

我想在Windows上运行的C++应用程序中插入代码,以确定stdout(或cout)是否指向控制台,如果是,则在写出之前将字符转换为终端编码。如果不是(例如,如果写入文件或管道),字符应该单独保留。转换部分不是问题,但我想知道应用程序是否有可能知道它的标准输出是去控制台还是去其他地方。我不确定WindowsAPI函数GetStdHandle是否有任何帮助,或者它是否只是一种指向标准输出但无法确定有关它的任何信息的方法。同样,我不确定我们是否可以从cout获得任何信息来表明它是指向控制台还是其他东西。到目前为止,我还没有找到任何类似的东西。 最佳答案

c++ - 在 ATL 项目中将 NULL 指针传递给进程外 COM 方法的正确方法

在ATL项目中将NULL指针传递给进程外COM方法的正确方法是什么?我创建了一个通过COM代理托管的COM服务器如果这很重要,我使用的是在Win7上运行的VS2012。服务器项目编译为64位,客户端项目编译为32位IDL看起来类似于下面import"oaidl.idl";import"ocidl.idl";[object,uuid(37EFA952-7036-4398-93A6-6CDAD9DFC005),dual,nonextensible,pointer_default(unique)]interfaceIGame:IDispatch{[id(1)]HRESULTpassNull(

c++ - 指向动态分配数组的静态指针

所以这个问题比较直截了当,我有几个半大型查找表~500kb一张。现在,这些完全相同的表被几个类实例化(可能很多)使用,考虑到这一点,我不想在每个类中存储相同的表。所以我可以将整个表作为“静态”成员转储到堆栈中,或者我可以有指向这些表的“静态”指针。在任何一种情况下,该类的构造函数都会检查它们是否已初始化,如果没有则进行初始化。但是,我的问题是,如果我选择指向表的静态指针(以免滥用堆栈空间),什么是适当清理这些表的好方法。另请注意,我考虑过使用boost::share_ptr,但选择不使用,这是一个非常小的项目,我不打算添加任何依赖项。谢谢 最佳答案

C++ Vector 给出难以置信的意外值(value)

我有这个代码:std::vectorloc;loc.push_back(cpx);loc.push_back(cpy);loc.push_back(play.GetSize().x);loc.push_back(70);std::cout在我正在制作的游戏中,但即使当我打印loc[2]和loc[3]的值时,它们与它们应该的值完全不同,当我运行这段代码时,我得到loc[3]等于70070而不是70.有人知道如何解决这个问题吗? 最佳答案 你还有一个cout没有endl或\n您忘记删除的代码中的某处。那个打印700,而70是代码示例中最

c++ - 是否可以从 stdin 输入指向指针的地址?

不久前,我有了一些简单的进程间通信的想法:一个进程将地址输出到一个指针,我将其复制到另一个进程的输入,然后更改原始变量。我是这样实现的:#include#includeusingnamespacestd;intmain(){boolp;cin>>p;if(p){intn;n=0;cout>n;*point+=n;}return0;}我使用scanf是因为cin提示并且无法编译。我尝试用两个进程运行它,但在我启动第二个实例并输入指针的地址(如第一个实例输出的那样)后,它卡住了。因为我只能访问Windows,所以我不知道它是否有SIGSEGV,或者它是否做了一些完全不同的事情。是我试图更改

c++ - Windows:指针唯一性

我需要在我的一个类(class)中使用一个快速的唯一ID来区分一个过程与另一个过程。我决定使用实例的地址来这样做。我最终得到了这样的结果(quintptr是Qt定义的整数类型,用于根据平台存储具有正确大小的地址):Foo::Foo():_id(reinterpret_cast(this)){...}想法是比较同一个exe的两个不同进程的输出。在Vista(我的开发机器)上没有问题。但是在XP上,_id的值在两个进程中是相同的(!)。谁能解释一下这是为什么?如果使用这样的指针是个好主意(我认为是,我不再那么确定)?谢谢。 最佳答案 每

c++ - 错误 C4703 使用了可能未初始化的本地指针变量 'y'

我在下面提供的代码中收到一个错误,可能使用了未初始化的局部指针变量“y”和使用了可能未初始化的局部指针变量“z”。请帮我解决这个问题?UINT8*x=newUINT8[512];if(!x)gotoclean;//UINT32*y=NULL;UINT32*y=newUINT32[4];if(!y)gotoclean;//char*z=NULL;char*z=newchar[512];if(!z)gotoclean;{....SomeCode....}clean:if(x)delete[]x;if(y)delete[]y;if(z)delete[]z; 最佳答

windows - 你如何比较两个 HWND 指针?

可以吗if(HWND1==HWND2)或者是否有我需要使用的函数来查看两个hwnd是否指向同一个窗口? 最佳答案 HWND只是一个长值,所以是的,您可以那样比较它们。 关于windows-你如何比较两个HWND指针?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2112833/